View Javadoc

1   package org.thema.scriptware.digester;
2   
3   import java.io.IOException;
4   import java.io.InputStream;
5   import java.util.HashMap;
6   import java.util.Map;
7   import org.apache.commons.digester.Digester;
8   
9   public class DigesterPlugin {
10      private InputStream file;
11      HashMap plugins;
12      
13      public DigesterPlugin() {
14      }
15      
16      public DigesterPlugin(InputStream file) {
17          this.file = file;
18          plugins = new HashMap();
19      }
20      
21      public void digest() throws IOException,org.xml.sax.SAXException {
22          try {
23              Digester digester = new Digester();
24              digester.push(this);
25              
26              digester.addObjectCreate("plugins/plugin", Plugin.class);
27              digester.addSetProperties("plugins/plugin");
28              
29              digester.addObjectCreate("plugins/plugin/script", Script.class);
30              digester.addSetProperties("plugins/plugin/script");
31              digester.addBeanPropertySetter("plugins/plugin/script/sql");
32              digester.addSetNext("plugins/plugin/script","addScript");
33              
34              /* TODO permitir atribuir o sql de 2 formas */            
35              //digester.addBeanPropertySetter("plugins/plugin/script","sql");            
36              
37              digester.addObjectCreate("plugins/plugin/script/params/param", Param.class);
38              digester.addSetProperties("plugins/plugin/script/params/param");            
39              digester.addSetNext("plugins/plugin/script/params/param","addParam");
40               
41              digester.addSetNext( "plugins/plugin", "addPlugin" );
42              
43              DigesterPlugin dp = (DigesterPlugin) digester.parse(file);
44              
45          } catch (IOException e) {
46              throw new IOException("Erro de I/O ao utilizar o arquivo!");
47          } catch (org.xml.sax.SAXException ex) {
48              throw new org.xml.sax.SAXException("Erro realizando parse de arquivo plugins.xml!");
49          }
50      }
51      
52      public void addPlugin(Plugin plugin ) {
53          plugins.put(plugin.getName(),plugin);
54      }
55      public Map getPlugins(){
56          return plugins;
57          
58      }
59  }